﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GE.Font;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using GE.Objects;

namespace GE
{
    class WaveScreen : GameScreen
    {
        private long wave;
        private Hero hero;
        int hintNum;
        String[] hints;

        public WaveScreen(long wave, Hero hero)
        {
            this.wave = wave;
            this.hero = hero;

            Random rand = new Random();

            String[] hints = {
                     "소지금을 항상 주의깊게 살펴보시면 어이없게 게임이 끝나는 것을 막을 수 있습니다.",
                     "스페이스바의 연타는 어떤 식으로든 게임을 빨리 끝낼 수 있는 한 가지 방법입니다.",
                     "몬스터의 효율을 조심히 고려하세요. 비싼 몬스터를 보내는 것이 능사는 아닙니다.",

                     "가난해서 그래픽이 없는 것은 아닙니다.",
                     "\"... 다음번에는 머드나 한번 만들어 볼까?\"",
                     "XNA: 2일 안에 게임을 만들어야 할 때, 당신의 선택",
                     "팀원중 66%가 협업용 소프트웨어로 Steam을 선택했습니다!",
                     "이 게임의 제작 당시 팀원의 66%가 대학원 원서를 작성하고 있었습니다.",
                     "마감을 하루 앞두고 기획자가 가족여행을 떠나버렸습니다. RIP  0724-0729",

                     "프로그래머 : @Tisde, 기타 잡일 : @BaalDL, 나머지 한 명은 트위터가 없습니다",
                     "게임이 너무 쉬우면 재미 없습니다.",
                     "이 게임은 총 3명이 만들었습니다.",
                     "이 게임은 수학과 두 명과 전산과 두 명이 만들었습니다.",
                     "맨아워는 미신입니다.",
                     "이 게임에는 숨겨진 것과 거짓말이 하나씩 있습니다.",

                     "이 게임의 제작 기간에는 스타크래프트 2의 플레이 시간이 포함되어 있습니다.",
                     "이 게임에는 마우스가 쓰이지 않습니다.",
                     "개발자를 지원해 주세요 : 따뜻한 러브플러스가 프로그래머를 구원합니다.",

                     "Special Thanks: Yoshi-TS4, @Jeddal_Yail0, @CuriousPaul, @istoriae",

                     "이 게임은 KAIST 게임제작 동아리 HAJE에서 제작되었습니다. http://www.haje.org/",
                     "게임 개발에 관심이 있으시다면 GameAde로! http://www.gameade.com/",
                     "본 게임에 사용된 폰트는 나눔고딕입니다. http://hangeul.naver.com/index.nhn",
                     "09년 인디게임 공모전 대상작 폴더를 즐겨보세요! http://folder.codeplex.com/",

                     "\"오락하는 데에 이유가 어디있어! 그냥 하는거지!\" - onesound",
                     };
            this.hints = hints;

            hintNum = rand.Next(hints.Length);
        }

        double totalTime = 0;
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                                       bool coveredByOtherScreen)
        {
            totalTime += gameTime.ElapsedGameTime.TotalSeconds;

            if (totalTime > 4.0)
            {
                this.ExitScreen();
            }
        }

        public override void Draw(GameTime gameTime)
        {
            SpriteBatch spriteBatch = ScreenManager.SpriteBatch;

            spriteBatch.Begin();


            if (hero != null)
            {
                FreetypeFont.DrawString(spriteBatch, "Wave " + wave,
                    new Vector2(100, 100), -0.0f,
                    36, Color.White);

                //웨이브 정보
                FreetypeFont.DrawString(spriteBatch, "용사를 레벨 " + hero.Level + "까지 키우셨습니다.",
                    new Vector2(100, 150),
                    12, Color.White);

                FreetypeFont.DrawString(spriteBatch, "총 " + String.Format("{0:N0}", hero.getEarnedMoney(wave)) + " 골드를 획득!",
                    new Vector2(100, 170),
                    12, Color.White);

                FreetypeFont.DrawString(spriteBatch, "다음 스테이지에는 조금 더 강한 용사가 나타납니다.",
                    new Vector2(220, 350), -0.1f,
                    14, Color.White);
                FreetypeFont.DrawString(spriteBatch, "주의하세요.",
                    new Vector2(240, 370), -0.1f,
                    14, Color.LightCyan);
            }
            else
            {
                FreetypeFont.DrawString(spriteBatch, "GAME START : WAVE " + wave,
                    new Vector2(100, 100), -0.0f,
                    36, Color.White);
            }
            String hint = "";

            switch(wave) {
                case 0:
                    hint = "게임의 목적은 용사를 죽이는 것입니다. 스페이스를 눌러 몬스터를 생산하세요.";
                    break;
                case 1:
                    hint = "좌, 우 화살표 키를 이용하여 생산하는 몬스터의 종류를 변경할 수 있습니다.";
                    break;
                case 2:
                    hint = "위, 아래 화살표 키를 이용하여 몬스터의 등급을 바꿀 수 있습니다.";
                    break;
                case 3:
                    hint = "마왕성도 전투 능력을 가지고 있지만, 부서지면 게임이 끝나니 주의하세요.";
                    break;
                case 4:
                    hint = "용사의 레벨이 높을수록 용사를 죽였을 때 얻을 수 있는 돈이 늘어납니다.";
                    break;
                case 5:
                    hint = "용사의 레벨을 많이 올렸을 경우, 다음 wave에 나타나는 용사의 레벨이 올라갑니다.";
                    break;
                case 6:
                    hint = "숫자키 2를 눌러 업그레이드를 할 수 있습니다. 다시 돌아오려면 1을 누르세요.";
                    break;
                case 7:
                    hint = "게임에 대한 유의 사항을 모두 들으셨습니다. 건승을 빕니다.";
                    break;
                default:
                    hint = hints[hintNum];
                    break;
            }

            FreetypeFont.DrawString(spriteBatch, "HINT: " + hint, new Vector2(50, 500), 14, Color.CornflowerBlue);

            spriteBatch.End();
        }
    }
}
